#pragma once
#include <string>
#include <thread>
#include <atomic>

/**
 * @brief HTTP静态文件服务器
 * 
 * 功能：
 * 1. 提供静态文件下载服务（如头像、图片、文档等）
 * 2. 支持跨域访问（CORS）
 * 3. 独立线程运行，不影响TCP服务器
 */
class HttpServer
{
public:
    /**
     * @param base_dir 静态文件根目录（如 "." 表示当前目录）
     * @param port HTTP服务器端口（默认8080）
     */
    HttpServer(const std::string& base_dir = ".", int port = 8080);
    ~HttpServer();
    
    /**
     * @brief 启动HTTP服务器（异步，在新线程中运行）
     * @return 是否启动成功
     */
    bool start();
    
    /**
     * @brief 停止HTTP服务器
     */
    void stop();
    
    /**
     * @brief 检查服务器是否正在运行
     */
    bool isRunning() const { return m_running; }
    
    /**
     * @brief 获取服务器端口
     */
    int getPort() const { return m_port; }

private:
    void serverThreadFunc();  // 服务器线程函数
    
    std::string m_baseDir;          // 静态文件根目录
    int m_port;                     // 端口号
    std::atomic<bool> m_running;    // 运行状态
    std::thread m_serverThread;     // 服务器线程
};

